Přeskočit na hlavní obsah

Otázka č. 10 - Správa operační paměti

  • Operační paměť - přístupná přímo k procesoru

  • Uchovává kód programů - procesů, uchovává mezivýsledky jejich činností, ale i stav ostatních prostředků.

  • Souvislý prostor paměťových buněk o velikosti jednoho 1 bitu, které jsou lineárně adresovány.

  • Pokud je tento adresový prostor přímo reprezentován fyzickou pamětí (RAM), označujeme je jako fyzický adresový prostor (FAP)

  • Správa FAP musí plnit 5 funkcí:

    • Přidělování paměťových regionů na požádání procesu.
    • Uvolňování paměťových regionů na požádání procesu. Vždy musí být uvolněno místo.
    • Udržování informací o obsazení paměťového prostoru
    • Zabezpečení ochrany paměti. Správa brání procesům přistupovat k paměti mimo regiony, které vlastní.
    • Podporovat střídavý běh více procesů.

Metody správy OP

Dvě hlavní metody správy OP

Triviální správa

  • Nejjednodušší metoda správy OP, pouze rozděluje adresový prostor na dva bloky.
    • První blok je přidělen rutinám jádra (Kernel memory - KM)
    • Druhý je přidělen procesům (Application memory - AM) Paměť jádra je sdílená, protože její rutiny využívají všechny procesy. Aplikační paměť je soukromá, má k ní přístup pouze proces vlastník.

Algoritmus přidělení regionu

  • Pokud je AM volná (není alokovaná), je přidělena procesu celá bez ohledu na ji požadovanou velikost.
  • jestliže není volná, je požadavek odmítnut s fatálními důsledky pro proces.
  • Alokace se děje jen jednou při spuštění procesu. Proces tuto paměť využívá celý svůj život.
    • Paměť je uvolněna při ukončení procesu

Bázový registr

  • Tam se uloží adresa adresového prostoru

  • Jeho obsah se automaticky přičítá k adrese ve strojovém kódu. Teprve pak jejich součet je použitý k adresaci.

  • V případě monolitické AM se ochrana omezuje pouze na paměť jádra.

  • Nejjednodušší způsob ochrany je právě bázový registr. Ten fyzicky zamezuje přidělení adresy menší než báze.

  • V režimu jádra má báze hodnotu 0, což umožňuje procesu využít celý adresový prostor.

  • Výhody

    • Jednoduchost
  • Nevýhody

    • Nedostatečné využití operační paměti

Statické bloky

  • Řešení problému s nedostatečným využitím paměti rozdělením AM na několik alokačních bloků

  • Uspořádání bloků je neměnné - Statické

  • Velikost bloků je určena při zavádění nebo překladu OS

  • Bloky mají různou velikost - To je důležitý. (Nejsou statické, že by měli stejnou velikost, ale proto, že se nemění jejich rozložení. Alespoň mně se to pletlo)

  • Žádá-li proces o přidělení regionu paměti, je mu přidělen nejmenší z volných bloků dostatečné velikosti.

  • Pro ochranu bloků lze použít tzv. limitní registr

    • Limitní registr obsahuje velikost aktuálního regionu.
    • Ještě než se k adrese přičte hodnota báze, je adresa porovnána s hodnotou limitního registru, a pokud je větší, je vyvolána výjimka, protože je adresa mimo rozsah regionu.
  • Největší změnou je možnost alokace více bloků jedním procesem (začne vznikat nesouvislý prostor)

  • Adresový prostor je rozdělen na tři hlavní regiony:

    • Kódový region (CR)
      • Obsahuje strojový kód programu a není do něj zapisováno.
    • Datový region (DR)
      • Obsahuje statická data programu (statické proměnné). Vyžaduje zápis a čtení.
    • Zásobníkový region (SR)
      • Obsahuje lokální proměnné a návratové adresy funkcí organizované jako zásobník. – LIFO

Strategie alokace:

  • First-fit: Při alokaci se vyhledá první přípustný blok, pokud je jeho velikost rovna požadavku, je blok přidělen celý, v ostatních případech je rozdělen na dva bloky, první o požadované velikosti je přidělen procesu, druhý zůstává volný.

  • Best-fit: Volí nejmenší blok z přípustných (pomalé a vede k fragmentaci).

    • Při uvolňování paměti se rozdělené bloky musí opět scelit. Tomuto procesu se říká "Scelování volných bloků".
  • Informovanost:: Základní informace o bloku se umisťují bezprostředně před něj a tvoří tzv. hlavičku bloku. Ta obsahuje údaje o velikosti bloku, není-li poslední a identifikaci procesu.

  • Ochrana paměti: Je obdobná statickým blokům, tj. použití bázového a limitního registru. Zvláštní pozornost věnujeme ochraně hlaviček, jejichž narušení mlže vést k degradaci celé správy paměti.

  • Tohle už asi není tak podstatný, ale třeba se na to zeptá.

Hlavním problémem je sklon k fragmentaci OP. Tj. ke vzniku mnoha malých nesouvislých (souvislé jsou zcelovány) bloků bolné paměti. Důsledkem je situace, kdy je sice relativně velké množství volné paměti, ale nikoliv souvislé bloky rozumné velikosti. Fragmentace vede k degradaci celého systému, neboť procesy stále čekají na paměť a nové nelze spouštět. Problém s fragmentací lze odstranit tzv. setřásáním bloků.